An enterprise system usually includes several interconnected systems exchanging data with each other. For example, the processing of content of multiple MIME types from multiple sources is often a useful aspect in enabling heterogeneous systems to communicate with each other, while providing efficient and generally good performance. As is known, MIME (Multi-Purpose Internet Mail Extensions) is a standard for formatting files of different types, such as text, graphics, or audio, e.g., so they can be sent over the Internet and seen or played by a web browser or e-mail application. See, for example, IETF Request for Comments 1521 and 1522.
Unfortunately, however, some conventional techniques for facilitating communication between such systems may be deficient in the level of flexibility and/or the efficiency demanded by many modern applications. For example, some conventional techniques may be not be adequately flexible for applications that leverage multiple sources of Big Data and/or dynamically changing content streams as source content for providing users with aggregated content on a real-time or near real-time basis. Some conventional techniques lack support for one or more of unstructured source content, content of multiple MIME types, dynamically updating transformation from source content to target content, being responsive to dynamic changes in the source content, etc. In this regard, conventional techniques often require the maintaining of a repository of data model information and/or other stored metadata that can be referenced when accessing the various content sources and/or targets. But, among other things, the need for having metadata stored regarding each type of data source and/or data target prevents conventional techniques from processing arbitrarily complex data structures (e.g., multiple mixed MIME types in the same input) since such arbitrarily complex data structures would require metadata for numerous data/object types to be configured and stored in advance of the processing of the data. For similar reasons, conventional techniques may not be capable of processing complex data having corresponding metadata stored within, such as, for example, when some of the complex data does not include corresponding metadata.
Example embodiments of the invention provide a graph based declarative mapping technique that can efficiently and flexibly accept multiple sources of various MIME types as source information and generate one or more outputs that aggregate the source information as needed.
Certain example embodiments relate to a system for mapping from one or more source information sets to one or more target information sets. At least one memory stores a plurality of mapping ontologies each associating a first declarative expression with a first information set from which to read first information, and a second declarative expression with a second information set to which second information determined based upon the read first information is written. At least one processor is configured to perform operations comprising: generating a mapping graph having a plurality of nodes arranged according to an execution flow for obtaining the one or more target information sets, wherein at least some nodes of the plurality of nodes represent respective ones of the plurality of mapping ontologies; and generating the one or more target information sets, each of which includes information determined from the one or more source information sets, by traversing the mapping graph according to the execution flow.
Certain example embodiments relate to a method for mapping from one or more source information sets to one or more target information sets. At least one memory is provided, the at least one memory storing a plurality of mapping ontologies, each associating a first declarative expression with a first information set from which to read first information, and a second declarative expression with a second information set to which second information determined based upon the read first information is written. A mapping graph having a plurality of nodes arranged according to an execution flow for obtaining the one or more target information sets is generated by at least one processor communicably coupled to said memory. At least some nodes of the plurality of nodes represent respective ones of the plurality of mapping ontologies. The one or more target information sets, each of which includes information determined from the one or more source information sets, is generated by the at least one processor by traversing the mapping graph according to the execution flow.
Certain example embodiments relate to a non-transitory computer-readable storage medium having stored thereon computer program instructions that, when executed by a processor of computer having a memory which stores a plurality of mapping ontologies, wherein each stored mapping ontology associates a first declarative expression with a first information set from which to read first information and a second declarative expression with a second information set to which second information determined based upon the read first information is written, causes the computer to perform operations comprising: generating, by at least one processor communicably coupled to said memory, a mapping graph having a plurality of nodes arranged according to an execution flow for obtaining the one or more target information sets, wherein at least some nodes of the plurality of nodes represent respective ones of the plurality of mapping ontologies; and generating, by the at least one processor, the one or more target information sets, each of which includes information determined from the one or more source information sets, by traversing the mapping graph according to the execution flow.
According to certain example embodiments, a plurality of mapping resolvers is stored, each of the first and second declarative expressions being associated with at least one of the stored mapping resolvers for accessing one or more information sets, and the traversing includes, at respective nodes of the mapping graph, executing the corresponding resolvers to map information from a source one of the information sets to a target one of the information sets.
According to certain example embodiments, the mapping graph includes a plurality of nodes in which (a) the nodes representing ones of the plurality of mapping ontologies is a first set of nodes, (b) a second set of nodes represent respective conditional expressions, and (c) a connection between a first node and a second node of the plurality of nodes represent a respective parent-child relationship between the first node and the second node.
Input information sets may be arbitrarily complex in certain example embodiments.
Certain example embodiments relate to techniques for mapping from one or more source information sets to one or more target information sets. At least one memory stores a plurality of mapping ontologies and a plurality of mapping resolvers. At least one processor is configured to perform operations comprising generating a mapping graph in which (a) a first set of nodes from a plurality of nodes represent respective ones of the plurality of mapping ontologies, each mapping ontology associating a first declarative expression with a source information set and second declarative expression with a target information set, (b) a second set of the plurality of nodes represent respective conditional expressions, and (c) a connection between a first node and a second node of the plurality of nodes represent a respective parent-child relationship between the first node and the second node. Each of the first and second declarative expressions is associated with at least one the stored mapping resolvers for accessing the one or more source information sets or the one or more target information sets. The at least one processor is further configured to perform operations comprising generating the one or more target information sets, each of which includes information determined from the one or more input information sets, by traversing the mapping graph.
These aspects, features, and example embodiments may be used separately and/or applied in various combinations to achieve yet further embodiments of this invention.